package rensoft.gwt.client.platform.json;

import com.google.gwt.json.client.JSONValue;

import java.util.Iterator;

import cs.java.collections.GenericIterator;
import cs.java.json.JSONArray;
import cs.java.json.JSONContainer;
import cs.java.json.JSONType;
import cs.java.json.JsonArrayImplBase;



public class JSONArrayImpl extends JsonArrayImplBase implements JSONArray {

	private final com.google.gwt.json.client.JSONArray value;

	public JSONArrayImpl() {
		this(new com.google.gwt.json.client.JSONArray());
	}

	public JSONArrayImpl(com.google.gwt.json.client.JSONArray value) {
		super(value);
		this.value = value;
	}

	public void add(JSONType value) {
		set(getSize(), value);
	}

	@Override public JSONArray asArray() {
		return this;
	}

	@Override public JSONContainer asContainer() {
		return this;
	}

	public JSONType get(int index) {
		return JSONImpl.create(value.get(index));
	}

	public int getSize() {
		return value.size();
	}

	public Iterator<JSONType> iterator() {
		return new GenericIterator<JSONType>(getSize()) {
			@Override protected JSONType getValue() {
				return get(getIndex());
			}
		};
	}

	public void set(int index, JSONType type) {
		value.set(index, (JSONValue) type.getValue());
	}

}
